// #include <iostream>
// #include <string>
// using namespace std;
//
// //虚继承 ->菱形继承
// class A
// {
// public:
//     A(int a):a(a)
//     {
//
//     }
// protected:
//     int a;
// };
//
// class B:virtual public A
// {
// public:
//     B(int a,int b):A(a),b(b)
//     {
//
//     }
//     int b;
// };
//
// class C:virtual public A
// {
// public:
//     C(int a,int c):A(a),c(c)
//     {
//
//     }
//     int c;
// };
//
// //子类一定要调用祖父类的构造函数
// class D:public B,public C
// {
// public:
//     //祖父类只和祖父类的构造函数相关
//     D(int a):B(1,1),C(2,3),A(a)
//     {
//
//     }
//     void print()
//     {
//         cout << a << b << c << endl;
//     }
// };
//
// int main()
// {
//     D d(3);
//     d.print();
//
//     return 0;
// }